package com.itic.appbase.applications.sys.region.persistence.dao;

import java.util.List;
import java.util.Map;

import com.itic.appbase.applications.sys.region.persistence.basedao.RegionMapper;
import com.itic.appbase.applications.sys.region.persistence.model.Region;
import com.itic.appbase.applications.sys.region.persistence.model.RegionExample;
import com.itic.appbase.applications.sys.region.persistence.model.RegionStat;
import com.itic.appbase.framework.common.annotation.IticDBDao;
import com.itic.appbase.framework.common.persistence.dao.CrudDao;
import com.itic.appbase.framework.common.persistence.model.DynamicParams;

@IticDBDao
public interface RegionDao
        extends RegionMapper, CrudDao<Region, RegionExample> {

    /**
     * 删除一个节点及其下所有子节点
     * 
     * @param rootId
     */
    int deleteTree(DynamicParams dynamicParams);

    /**
     * 查询行政区划树
     * 
     * @param region
     * @return
     */
    List<Region> selectRegionList(Region region);

    /**
     * 按行政区划类别统计数量
     * 
     * @return List<RegionStat>
     */
    List<RegionStat> statByType(Region region);

    /**
     * 查询行政区划树(灾情现场资料)
     * 
     * @param region
     * @return
     */
	List<Region> selectRegionListForZqxczl(Region region);
	

	   
   /**
    * 权限过滤: 根据传入的行政区划id获取本级和所有上级行政区划对象
    * @param param
    * @return
    */
    List<Region> getSjAllRegionByRegionId(Map<String, Object> param);
    
    /** 
     * 根据code值获取Region
     * @param code
     * @return
     * @return Region 
    */
    Region getRegionByCode(String code);
    
    /**
     * 基础数据库行政区划、地区人口查询行政区划列表
     * 
     * @param region
     * @return
     */
    List<Region> getRegionList(Region region);
    List<Region> getRegionTree(Region region);
}